package com.sikaryofficial.system.api.model.infomation;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.sikaryofficial.common.core.annotation.CustomerDateDeserializer;
import com.sikaryofficial.common.core.annotation.LocalDateTimeFormat;
import com.sikaryofficial.system.api.model.AddressDTO;
import com.sikaryofficial.system.api.model.att.AttachmentResp;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * 文章对象 article_t
 *
 * @author qinjinyuan
 * @date 2024-03-13
 */
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Accessors(chain = true)
@ApiModel(value = "文章出参", description = "文章出参")
public class ArticleDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "序列号")
    private Integer seqNo;
    /** 权重 ：整数，值越大，排序越靠前 */
    @ApiModelProperty(value = "权重 ：整数，值越大，排序越靠前")
    private Integer weight;
    /** 是否为kol帖子, 0-否 1-是 */
    @ApiModelProperty(value = "是否为kol帖子, 0-否 1-是")
    private Integer hasKol;
    /** 文章标签:0-其他,1-小口吸,2-大口吸,3-Event */
    @ApiModelProperty(value = "文章标签:0-其他,1-小口吸,2-大口吸,3-Event")
    private Integer articleLabel;
    @ApiModelProperty(value = "文章标签描述")
    private String articleLabelDesc;
    /**
     * 文章ID
     */
    @ApiModelProperty(value = "文章ID")
    private Long articleId;

    /**
     * 文章父ID
     */
    @ApiModelProperty(value = "文章父ID,默认根节点为0")
    private Long articleParentId;

    /**
     * 文章类型：0-文章 1-topic
     */
    @ApiModelProperty(value = "文章类型：0-文章 1-topic,默认为0")
    private Integer articleType;
    /**
     * 标题
     */
    @ApiModelProperty(value = "标题")
    private String headline;

    /**
     * 地址ID：发布地区
     */
    @ApiModelProperty(value = "地址ID 发布地区")
    private Long addressId;

    /** 国家 */
    @ApiModelProperty(value = "发布国家")
    private String country;
    /**
     * 城市
     */
    @ApiModelProperty(value = "发布城市")
    private String city;
    /**
     * 区域
     */
    @ApiModelProperty(value = "发布区域")
    private String area;

    @ApiModelProperty(value = "地址对象  发布地区")
    private AddressDTO address;

    /**
     * 编辑方式：0-在线编辑 1-导入
     */
    @ApiModelProperty(value = "编辑方式：0-在线编辑 1-导入，默认为0")
    private Integer editType;

    /**
     * 内容类型:0-动态 1-长文  2-短视频
     */
    @ApiModelProperty(value = "内容类型:0-动态 1-长文  2-短视频，默认为0")
    private Integer contentType;

    /** 父级分类ID */
    @ApiModelProperty(value = "父级分类ID，默认是1")
    private Long parentCategory;

    @ApiModelProperty(value = "内容类型描述")
    private String contentTypeDesc;

    /**
     * 文章内容
     */
    @ApiModelProperty(value = "文章内容")
    private String content;

    /**
     * 审核状态:0-草稿,1-审核中(点击发布),2-审核通过(发布成功),3-审核不通过
     */
    @ApiModelProperty(value = "审核状态:0-草稿,1-审核中(点击发布),2-审核通过(发布成功),3-审核不通过，默认为0")
    private Integer auditStatus;

    @ApiModelProperty(value = "审核状态描述")
    private String auditStatusDesc;

    @ApiModelProperty(value = "文章状态:0-正常,1-屏蔽,2-举报")
    private Integer status;

    @ApiModelProperty(value = "文章状态描述")
    private String statusDesc;

    /**
     * 是否屏蔽：0-否，1-是，默认未屏蔽
     */
    @JsonIgnore
    private Integer hasBlocked;

    /**
     * 文件来源：1-爬虫 2-后台管理端 3-用户
     */
    @ApiModelProperty(value = "文件来源：1-爬虫 2-后台管理端 3-用户，默认为1")
    private Integer source;
    /** 是否原创：0-原创; 1-非原创 */
    @ApiModelProperty(value = "是否原创：0-原创; 1-非原创")
    private Integer hasOriginal;
    /** 是否首发：0-否; 1-是，默认0 */
    @ApiModelProperty(value = "是否首发：0-否; 1-是，默认0")
    private Integer hasFirstEpisode;
    /**
     * 文章站点
     */
    @ApiModelProperty(value = "文章站点:vaping360")
    private String articleSite;
    /**
     * 封面图片
     */
    @ApiModelProperty(value = "封面图片")
    private String coverUrl;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人ID")
    private Long createdBy;

    @ApiModelProperty(value = "创建人名称")
    private String createdName;

    @ApiModelProperty(value = "昵称")
    private String nickName;

    /**
     * 创建时间
     */
    @LocalDateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonDeserialize(using = CustomerDateDeserializer.class)
    @ApiModelProperty(value = "创建时间")
    private Date createdTime;

    /**
     * 发布时间
     */
    @LocalDateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonDeserialize(using = CustomerDateDeserializer.class)
    @ApiModelProperty(value = "发布时间")
    private Date publishTime;

    @ApiModelProperty(value = "作者头像")
    private String avatar;

    @ApiModelProperty(value = "logo图片地址")
    private String logoUrl;

    private Integer tenantId;

    @ApiModelProperty(value = "品牌编码")
    private String brandNo;

    @ApiModelProperty(value = "封面图片列表")
    private List<AttachmentResp> coverUrlList;

    @ApiModelProperty(value = "附件列表")
    private List<AttachmentResp> attachmentList;

    /**
     * 子标题对象
     */
    @ApiModelProperty(value = "子标题对象")
    private List<ArticleCategoryObjVO> articleCategoryList;
    /**
     * topic对象
     */
    @ApiModelProperty(value = "topic对象")
    private List<TopicObjVO> topicList;
    /**
     * 好友对象列表
     */
    @ApiModelProperty(value = "好友对象列表")
    private List<FriendObjVO> friendList;

    @ApiModelProperty(value = "Get Follow(粉丝数量)", example = "123")
    private Long fansCount;
    /**
     * 是否关注
     */
    @ApiModelProperty(value = "是否关注,true-关注 false-未关注")
    private boolean hasFollow;

    @ApiModelProperty(value = "查阅量", example = "123")
    private Long viewCount;
    /**
     * 点赞统计
     */
    @ApiModelProperty(value = "点赞统计", example = "123")
    private int likesCount;

    @ApiModelProperty(value = "曝光次数", example = "123")
    private Long exposureCount;

    /**
     * 收藏统计
     */
    @ApiModelProperty(value = "收藏统计", example = "123")
    private int collectionCount;

    /**
     * 评价统计
     */
    @ApiModelProperty(value = "评价统计", example = "123")
    private int evaluationCount;

    /**
     * 转发统计
     */
    @ApiModelProperty(value = "转发统计", example = "12")
    private int forwardCount;

    /**
     * 是否有我的点赞
     */
    @ApiModelProperty(value = "是否有我的点赞")
    private boolean hasOwnerLikes;

    /**
     * 是否有我的收藏
     */
    @ApiModelProperty(value = "是否有我的收藏")
    private boolean hasOwnerCollection;

    /**
     * 源网站地址
     */
    @ApiModelProperty(value = "源网站地址")
    private String sourceUrl;

    /**
     * 文章概要
     */
    @ApiModelProperty(value = "文章概要")
    private String summary;

    @ApiModelProperty(value = "品牌专栏ID")
    private Long brandSpecialId;

    @ApiModelProperty(value = "语言: zh_CN; en_US")
    private String lang;

    /**
     * 是否选中为tag, 0-否，1-是
     */
    @ApiModelProperty(value = "是否选中为tag, 0-否，1-是", example = "0")
    private Integer tagEnable;

    /**
     * 积分详情值
     */
    @ApiModelProperty(value = "积分详情值")
    private Integer pointsDetailValue;
    /**
     * 是否获取积分 false 否 true 是
     */
    @ApiModelProperty(value = "是否获取积分 false 否 true 是")
    private Boolean getPointsFlag;
}
